﻿using OneCard.Face8280Module.DeviceModel.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace OneCard.Face8280Module.DeviceModel.DTO.WorkParameter
{
    public class GetWorkParameterResult : FaceAPIResult
    {

        /// <summary>
        /// 设备 SN
        /// </summary>
        public string DeviceID { get; set; }  // 是

        /// <summary>
        /// 设备名称
        /// </summary>
        public string DeviceName { get; set; }  // 是


        /// <summary>
        /// 同步系统时间（时间戳，比如：1584427174 对应是2020-03-17 14:39:34）
        /// </summary>
        public long ParameterSystemTime { get; set; }  // 是


        #region 语音
        /// <summary>
        /// 音量大小(范围 0-10)  
        /// </summary>
        public int ParameterVolume { get; set; }  // 是


        /// <summary>
        /// 语音模式 0,不播报；1，播放名字; 2,播放问候语;3,播放名字和问候语
        /// </summary>
        public int ParameterVoiceMode { get; set; }  // 是

        /// <summary>
        /// 问候语 0，请通行;1,欢迎光临;2，时间问候语；;3、消费登记成功
        /// </summary>
        public int ParameterGrettings { get; set; }  // 是

        /// <summary>
        /// 陌生人语音 0，不播报;1,播报假体;2，播报陌生人；3，播报假体和陌生人
        /// </summary>
        public int ParameterStrangerVoice { get; set; }  // 是
        #endregion


        #region 补光灯
        /// <summary>
        /// 补光灯模式：0：常闭；  1：常开； 2：自动；
        /// </summary>
        public int ParameterLightSwitch { get; set; }  // 是
        #endregion


        #region UI界面
        /// <summary>
        /// 亮度设置 1-10
        /// </summary>
        public int ParameterBrightness { get; set; }  // 是

        /// <summary>
        /// 曝光设置     -3-3  （2021年8月3日 新增）
        /// </summary>
        public int ParameterExposure { get; set; }  // 是

        /// <summary>
        /// 红外图像开关 0--关闭；1--开启  （2021年8月3日 新增）
        /// </summary>
        public int ParameterIR { get; set; }  // 是

        /// <summary>
        /// 主界面设置--公司名称
        /// </summary>
        public string ParameterCompanyName { get; set; }  // 是


        /// <summary>
        /// 语言选择 0，中文；1，英文；2，繁体
        /// </summary>
        public int ParameterLanguageChoose { get; set; }  // 是

        /// <summary>
        /// 菜单密码
        /// </summary>
        public string ParameterLoginPassword { get; set; }  // 是

        #endregion



        #region 身份信息


        /// <summary>
        /// 序列号
        /// </summary>
        public string ParameterSerialNum { get; set; }  // 是

        /// <summary>
        /// 制造商
        /// </summary>
        public string ParameterManufacturer { get; set; }  // 是

        /// <summary>
        /// 网址
        /// </summary>
        public string ParameterWebsite { get; set; }  // 是

        /// <summary>
        /// 生产日期
        /// </summary>
        public string ParameterProductionDate { get; set; }  // 是
        #endregion






        #region 记录存储
        /// <summary>
        /// 是否存储非雇员识别记录，0:不存储，1:存储
        /// </summary>
        public int ParameterSaveExternalvisitors { get; set; }  // 是

        /// <summary>
        /// 保存现场图片 0，不保存；1，保存
        /// </summary>
        public int ParameterSavePicture { get; set; }  // 是
        #endregion

        #region 人脸识别

        /// <summary>
        /// 活体检测,1 打开，0 关闭
        /// </summary>
        public int ParameterPreview { get; set; }  // 是
        /// <summary>
        /// 活体检测阈值1-10  （2021年8月3日 新增）
        /// </summary>
        public int ParameterFaceIRThreshold { get; set; }  // 是
        /// <summary>
        /// 识别距离 1--远（默认值）、2--中、3--近  
        /// </summary>
        public int ParameterDistance { get; set; }  // 是

        /// <summary>
        /// 人脸识别阈值   1-99
        /// </summary>
        public int ParameterFaceThreshold { get; set; }  // 是

        /// <summary>
        /// 1：打开口罩检测，其他：关闭
        /// </summary>
        public int ParameterMask { get; set; }  // 是
        /// <summary>
        /// 口罩阈值 1-99
        /// </summary>
        public int ParameterMaskThreshold { get; set; }  // 是
        #endregion



        #region 体温检测

        /// <summary>
        /// 测温模式开关。0：非测温模式 1：测温模式
        /// </summary>
        public int ParameterTempSwitch { get; set; }  // 是

        /// <summary>
        /// 开启华氏温度,1:开，0:关
        /// </summary>
        public int ParameterFahrenheitSwitch { get; set; }  // 是

        /// <summary>
        /// 温度补偿值 -1 -- 1 
        /// </summary>
        public float ParameterCompensate { get; set; }  // 是 

        /// <summary>
        /// 温度比对阈值（最大值）
        /// </summary>
        public float ParameterTempThresholdMax { get; set; }  // 是
        #endregion




        #region 网络参数
        /// <summary>
        /// 服务器地址
        /// </summary>
        public string ParameterCloudserverAddress { get; set; }  // 是
        /// <summary>
        /// 主动触发云端轮训时间（以秒为单位）  5-7200s
        /// </summary>
        public int ParameterPolling { get; set; }  // 是


        #region 网络扩展功能
        /// <summary>
        /// Web页面管理开关,1:开，0:关
        /// </summary>
        public int? ParameterEnableWeb { get; set; }  // 是


        /// <summary>
        /// Linux命令行开关 ,1:开，0:关 
        /// </summary>
        public int? ParameterEnableTelnet { get; set; }  // 是

        /// <summary>
        ///  UDP端口号 （UDP广播搜索发现用）
        /// </summary>
        public int? ParameterUDPPort { get; set; }  // 是
        /// <summary>
        ///  UDP搜索功能开关
        /// </summary>
        public int? ParameterEnableUDP { get; set; }  // 是

        /// <summary>
        /// 是否使用HTTP协议中的GZIP压缩算法
        /// </summary>
        public int? ParameterHttpPostUseGZIP { get; set; }//
        #endregion

        #endregion


        #region 门禁参数
        /// <summary>
        /// 出入类型 0,入门；1，出门
        /// </summary>
        public int ParameterAccessType { get; set; }  // 是

        /// <summary>
        /// WG输出格式 26 / 34
        /// </summary>
        public int ParameterWgFormat { get; set; }  // 是

        /// <summary>
        /// 开门保持时间 1-65535（s）
        /// </summary>
        public int ParameterKeepOpenDoor { get; set; }  // 是

        /// <summary>
        /// 免验证开门 1--启用；0--禁用
        /// </summary>
        public int ParameterLaissezSwitch { get; set; }  // 是

        /// <summary>
        /// 识别间隔 0--禁用 ; 1-65535（s）
        /// </summary>
        public int ParameterRecgInterval { get; set; }  // 是

        /// <summary>
        /// 间隔记录存储设置 0,关闭；1，打开
        /// </summary>
        public int ParameterIntervalRecoSwitch { get; set; }  // 是

        /// <summary>
        /// 开门超时报警开关，0，关闭；1，开启
        /// </summary>
        public int ParameterDoorLongOpenAlarmSwitch { get; set; }  // 是

        /// <summary>
        /// 开门超时时间，门打开超过这个时间就报警	5-255（s）
        /// </summary>
        public int ParameterDoorSensorDelay { get; set; }  // 是

        /// <summary>
        /// 门磁报警开关，0，关闭；1，开启
        /// </summary>
        public int ParameterDoorAlarmSwitch { get; set; }  // 是


        /// <summary>
        /// 消防报警开关，0，关闭；1，开启
        /// </summary>
        public int ParameterFireAlarm { get; set; }  // 是
        #endregion



        #region 固件信息

        /// <summary>
        /// 固件版本信息
        /// </summary>
        public string ParameterFirmwareMsg { get; set; }  // 是
        /// <summary>
        /// 固件MD5值
        /// </summary>
        public string parameterFirmwareMd5 { get; set; }  // 是
        /// <summary>
        /// 固件下载路径
        /// </summary>
        public string parameterFirmwarePath { get; set; }  // 是

        #endregion

        /// <summary>
        /// 开门时段
        /// </summary>
        public List<APIModel_TimeGroupDetail> Timegroups { get; set; }  // 是


        public GetWorkParameterResult()
        {
            success = 0;
            msg = null;

            //Timegroups = new List<TimeGroupDetail>();
            //for (int i = 0; i < 64; i++)
            //{
            //    Timegroups.Add(new TimeGroupDetail(i+1));
            //}
        }


        public void SetFaceDeviceDetail(APIModel_WorkParameter oDevice)
        {
            DeviceID = oDevice.DeviceID;

            ParameterVolume = oDevice.ParameterVolume;
            ParameterVoiceMode = oDevice.ParameterVoiceMode;
            ParameterGrettings = oDevice.ParameterGrettings;
            ParameterStrangerVoice = oDevice.ParameterStrangerVoice;

            ParameterLightSwitch = oDevice.ParameterLightSwitch;

            ParameterBrightness = oDevice.ParameterBrightness;
            ParameterExposure = oDevice.ParameterExposure;
            ParameterIR = oDevice.ParameterIR;
            ParameterCompanyName = oDevice.ParameterCompanyName;
            ParameterLanguageChoose = oDevice.ParameterLanguageChoose;
            ParameterLoginPassword = oDevice.ParameterLoginPassword;

            ParameterSerialNum = oDevice.ParameterSerialNum;
            ParameterManufacturer = oDevice.ParameterManufacturer;
            ParameterWebsite = oDevice.ParameterWebsite;
            ParameterProductionDate = oDevice.ParameterProductionDate;

            ParameterSaveExternalvisitors = oDevice.ParameterSaveExternalvisitors;
            ParameterSavePicture = oDevice.ParameterSavePicture;


            ParameterPreview = oDevice.ParameterPreview;
            ParameterFaceIRThreshold = oDevice.ParameterFaceIRThreshold;
            ParameterDistance = oDevice.ParameterDistance;
            ParameterFaceThreshold = oDevice.ParameterFaceThreshold;
            ParameterMask = oDevice.ParameterMask;
            ParameterMaskThreshold = oDevice.ParameterMaskThreshold;

            ParameterTempSwitch = oDevice.ParameterTempSwitch;
            ParameterFahrenheitSwitch = oDevice.ParameterFahrenheitSwitch;
            ParameterCompensate = oDevice.ParameterCompensate;
            ParameterTempThresholdMax = oDevice.ParameterTempThresholdMax;


            ParameterCloudserverAddress = oDevice.ParameterCloudserverAddress;
            ParameterPolling = oDevice.ParameterPolling;


            ParameterEnableWeb = oDevice.ParameterEnableWeb;
            ParameterEnableTelnet = oDevice.ParameterEnableTelnet;
            ParameterEnableUDP = 1;
            ParameterUDPPort = oDevice.ParameterUDPPort;
            ParameterHttpPostUseGZIP = 1;


            ParameterAccessType = oDevice.ParameterAccessType;
            ParameterWgFormat = oDevice.ParameterWgFormat;
            ParameterKeepOpenDoor = oDevice.ParameterKeepOpenDoor;
            ParameterLaissezSwitch = oDevice.ParameterLaissezSwitch;
            ParameterRecgInterval = oDevice.ParameterRecgInterval;
            ParameterIntervalRecoSwitch = oDevice.ParameterIntervalRecoSwitch;
            ParameterDoorLongOpenAlarmSwitch = oDevice.ParameterDoorLongOpenAlarmSwitch;
            ParameterDoorSensorDelay = oDevice.ParameterDoorSensorDelay;
            ParameterDoorAlarmSwitch = oDevice.ParameterDoorAlarmSwitch;
            ParameterFireAlarm = oDevice.ParameterFireAlarm;
        }


    }
}
